/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Source;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

/**
 *
 * @author luisfernando
 */
public class Revision_DAO implements DAO {

    /*
     * idRevision int PRIMARY KEY,
     * fecha timestamp,
     * titulo varchar(45),
     * descripcion varchar(100),
     * estrellas int,
     * idArticulo int REFERENCES Articulo(idArticulo),
     * idUsuario int REFERENCES Usuario(idUsuario)
     */
    private String queryBD;
    ConexionDB conexion;
    LinkedList<Revision_POJO> listaDetalle = new LinkedList<Revision_POJO>();
    ResultSet resultado;

    private String temp;
    public Revision_DAO() {
        this.conexion = new ConexionDB();
    }

    @Override
    public LinkedList<Revision_POJO> obtenerReg(int idRevision) throws SQLException {

        

        temp = "SELECT * FROM Revision WHERE idRevision = ?";
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setInt(1, idRevision); 
       // System.out.println("obtener " + queryBD);
        try {


            conexion.abrirConexion();
            resultado = ps.executeQuery();

            if (resultado.next()) {


                Revision_POJO revision = new Revision_POJO();

                revision.setDescripcion(resultado.getString("descripcion"));
                revision.setEstrellas(Integer.parseInt(resultado.getString("estrellas")));
                revision.setFecha(resultado.getString("fecha"));
                revision.setIdArticulo(Integer.parseInt(resultado.getString("idArticulo")));
                revision.setIdUsuario(Integer.parseInt(resultado.getString("idUsuario")));
                revision.setTitulo(resultado.getString("titulo"));
                revision.setIdRevision(Integer.parseInt(resultado.getString("idRevision")));

                listaDetalle.add(revision);



            }
            ps.close();
            conexion.cerrarConexion();

        } catch (Exception ex) {

            System.out.println("Error " + ex);

        }
        return listaDetalle;


    }

    /*
     * idRevision int PRIMARY KEY,
     * fecha timestamp,
     * titulo varchar(45),
     * descripcion varchar(100),
     * estrellas int,
     * idArticulo int REFERENCES Articulo(idArticulo),
     * idUsuario int REFERENCES Usuario(idUsuario)
     */
    public int guardarReg( String fecha, String titulo, String descripcion, int estrellas, int idArticulo, int idUsuario) throws SQLException {
        
        temp="INSERT INTO Revision (fecha, titulo, descripcion,estrellas, idArticulo, idUsuario) VALUES (?,?,?,?,?,?)";
    /*    queryBD = "INSERT INTO Revision (  fecha, titulo, descripcion,estrellas, idArticulo, idUsuario ) VALUES ("
                + "'" + fecha + "' , '" + titulo + "' , '" + descripcion + "' , " + estrellas + ", " + idArticulo
                + ", " + idUsuario + " )";
        System.out.println("guardar " + queryBD); */
        
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setString(1, fecha); 
        ps.setString(2, titulo); 
        ps.setString(3, descripcion); 
        ps.setInt(4, estrellas);
        ps.setInt(5,idArticulo);
        ps.setInt(6, idUsuario);
        
        try {
            conexion.abrirConexion();
            int resultadoC = ps.executeUpdate();
            ps.close();
            conexion.cerrarConexion();
            return resultadoC;
        } catch (Exception ex) {

            System.out.println("error " + ex);
            return -1;

        }

    }

    public int actualizarReg(int idRevision, String fecha, String titulo, String descripcion, int estrellas, int idArticulo, int idUsuario) throws SQLException {

         temp="UPDATE Revision SET fecha=?, titulo=?,descripcion=?,estrellas=?,idArticulo=?,idUsuario=? WHERE idRevision=?";
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setString(1, fecha); 
        ps.setString(2, titulo);
        ps.setString(3, descripcion);
        ps.setInt(4, estrellas);
        ps.setInt(5, idArticulo);
        ps.setInt(6,idUsuario);
        ps.setInt(7, idRevision);
  /*      queryBD = "UPDATE Revision SET  "
                + "fecha= '" + fecha + "', "
                + "titulo = '" + titulo + "', "
                + "descripcion = '" + descripcion + "', "
                + "estrellas = " + estrellas + ", "
                + "idArticulo = " + idArticulo + ", "
                + "idUsuario = " + idUsuario + " "
                + " WHERE idRevision = " + idRevision;

        System.out.println("actualizar " + queryBD);
        * 
        * 
        */
        
       
        try {
            conexion.abrirConexion();
            int resultadoC = ps.executeUpdate();
            conexion.cerrarConexion();
            return resultadoC;

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return -1;
        }
    }

    @Override
    public int eliminarReg(int idRevision) throws SQLException {

        temp = "DELETE FROM Revision WHERE idRevision = ?";
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setInt(1, idRevision); 
       // System.out.println("delete " + queryBD);
        try {
            conexion.abrirConexion();
            int resultadoC = ps.executeUpdate();
            ps.close();
            conexion.cerrarConexion();
            return resultadoC;

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return -1;
        }

    }
}
